/**
 * FileContentManager is a Java based file manager desktop application, it can
 * show, edit and manipulate the content of the files archived inside a zip.
 * 
 * Copyright (C) 2007
 * 
 * Created by Camila Sanchez [http://mimix.wordpress.com/], Rafael Naufal
 * [http://rnaufal.livejournal.com] and Rodrigo [rdomartins@gmail.com]
 * 
 * FileContentManager is free software; you can redistribute it and/or modify it
 * under the terms of the GNU Lesser General Public License as published by the
 * Free Software Foundation; either version 2.1 of the License, or (at your
 * option) any later version.
 * 
 * This library is distributed in the hope that it will be useful, but WITHOUT
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
 * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
 * details.
 * 
 * You should have received a copy of the GNU Lesser General Public License
 * along with FileContentManager; if not, write to the Free Software Foundation,
 * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
 */
package br.com.jteam.jfcm.gui;

import javax.swing.JFrame;

import br.com.jteam.jfcm.gui.util.GUIUtil;

/**
 * Implementa&ccedil;&atilde;o do gerenciador de tela.
 * 
 */
public class FCVGUIManagerTemplate implements GUIManagerTemplate
{
	/**
	 * Construtor de tela.
	 */
	private GUIBuilder guiBuilder;

	/**
	 * Construtor que recebe um construtor de telas.
	 * 
	 * @param guiBuilder
	 *            Construtor de tela. N&atilde;o pode ser nulo.
	 * @throws IllegalArgumentException
	 *             caso o par&acirc;metro seja nulo.
	 */
	public FCVGUIManagerTemplate(GUIBuilder guiBuilder)
	{
		if (guiBuilder == null)
		{
			throw new IllegalArgumentException("Null gui builder.");
		}
		this.guiBuilder = guiBuilder;
	}

	public void create()
	{
		guiBuilder.createMenuItens();
		guiBuilder.createHistoryFiles();
		guiBuilder.createMenus();
		guiBuilder.createMenuBar();
		guiBuilder.createContentContainer();
		guiBuilder.createMainFrame();
	}

	/**
	 * @throws IllegalArgumentException
	 *             caso o m&eacute;todo {@link #create()} ainda n&atilde;o tenha
	 *             sido invocado
	 */
	public void show()
	{
		JFrame frame = guiBuilder.getMainFrame();
		if (frame == null)
		{
			throw new IllegalArgumentException("Null main frame");
		}
		frame.pack();
		GUIUtil.centerWindow(frame);
		frame.setVisible(true);
	}
}
